A redundant array of inexpensive disks (RAID) storage subsystem may be responsible for management, processing and storage for input/output (I/O) requests from one or more hosts attached to the subsystem. While processing multiple requests simultaneously, it is desirable that the storage subsystem maintains integrity of data while processing host requests in a reasonable amount of time. One approach to ensuring data integrity is locking.
For example, in order to ensure that multiple host I/O requests do not conflict, locking solutions may lock (e.g. make the RAID volume inaccessible to more than one host) an entire logical RAID volume while one I/O request is being processed by a RAID controller. In another approach, locking may be on RAID stripe basis where an entire stripe is locked while an I/O request is being processed by a RAID controller. Locking may ensure that a host I/O request that accesses or updates data maintained on the RAID volume is completed without compromising on the integrity of data involved.
Further, RAID arrays involve an implicit parity generation for writes initiated by a host. Such parity generation operations require associated parity reads/writes across a given RAID stripe for which a write operation has occurred.